www.gusucode.com > 粒子群算法 matlab求解源码及结果 > 粒子群算法 matlab求解源码及结果/粒子群算法 matlab求解源码及结果/粒子群算法源代码/粒子群算法源代码/SAPSO.m
function [xm,fv] = SAPSO(fitness,N,c1,c2,wmax,wmin,M,D) format long; %------初始化种群的个体------------ for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------先计算各个粒子的适应度---------------------- for i=1:N p(i)=fitness(x(i,:)); y(i,:)=x(i,:); end pg=x(N,:); %Pg为全局最优 for i=1:(N-1) if fitness(x(i,:))<fitness(pg) pg=x(i,:); end end %------进入主要循环------------ for t=1:M for j=1:N fv(j) = fitness(x(j,:)); end fvag = sum(fv)/N; fmin = min(fv); for i=1:N if fv(i) <= fvag w = wmin + (fv(i)-fmin)*(wmax-wmin)/(fvag-fmin); else w = wmax; end v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:)); x(i,:)=x(i,:)+v(i,:); if fitness(x(i,:))<p(i) p(i)=fitness(x(i,:)); y(i,:)=x(i,:); end if p(i)<fitness(pg) pg=y(i,:); end end end xm = pg'; fv = fitness(pg);